package com.woniuxy.amusementparkos.controller.ssj;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.woniuxy.amusementparkos.dto.lvd.TableDataDto;
import com.woniuxy.amusementparkos.entity.ssj.CountGoods;
import com.woniuxy.amusementparkos.entity.ssj.CountGoodsNum;
import com.woniuxy.amusementparkos.entity.ssj.CountGoodsSpend;
import com.woniuxy.amusementparkos.entity.ssj.CountOneGoods;
import com.woniuxy.amusementparkos.entity.ssj.CountOneGoodsNum;
import com.woniuxy.amusementparkos.entity.ssj.CountOneGoodsSpend;
import com.woniuxy.amusementparkos.entity.ssj.CountSingle;
import com.woniuxy.amusementparkos.entity.ssj.CountTotal;
import com.woniuxy.amusementparkos.entity.ssj.Csw;
import com.woniuxy.amusementparkos.entity.ssj.Cus;
import com.woniuxy.amusementparkos.entity.ssj.Cw;
import com.woniuxy.amusementparkos.entity.ssj.Cwos;
import com.woniuxy.amusementparkos.service.ssj.CusService;

@Controller
@RequestMapping("/customer")
public class CustomerController {
	@Autowired
	CusService cusService;

	/**
	 * 跳转到顾客详细信息页面
	 * 
	 * @return
	 */
	@RequestMapping("/customerPage")
	public String showCustomerPage() {
		return "/ssj/customerDetail.html";
	}

//	/**
//	 * 展示所有顾客的详细信息
//	 * 
//	 * @param customer
//	 * @return
//	 */
//	@ResponseBody
//	@RequestMapping("/showCustomerDetail")
//	public List<Csw> showCustomerDetail(Customer customer) {
//		// 更新顾客的消费总额和消费等级
//		cusService.updateCtotalAndLidBycid();
//		return cusService.getAllCustomerDetail();
//	}
	/**
	 * 展示所有顾客的详细信息
	 * 
	 * @param customer
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/showCustomerDetail")
	public TableDataDto<Csw> showCustomerDetail(@RequestParam("page") int page,
			@RequestParam("limit") int pageSize) {
		// 获取当前页起始数据序号
		page = (page - 1) * pageSize;
		// 更新顾客的消费总额和消费等级
		cusService.updateCtotalAndLidBycid();
		// 获取当前页展示的所有数据
		List<Csw> csws=cusService.getAllCustomerDetail(page,pageSize);
		// 获取数据总条数:统计顾客的总人数
		long recordCount =cusService.getCountCus();
		// 封装为Layui表格数据格式
		TableDataDto<Csw> result = new TableDataDto<Csw>(0, "", recordCount, csws);
		return result;
	}

	/**
	 * 跳转到余额和消费记录页面
	 * 
	 * @return
	 */
	@RequestMapping("/balancePage")
	public String showBalancePage() {
		return "/ssj/balanceAndSpendDetail.html";
	}

//	/**
//	 * 展示所有顾客余额为0的顾客信息
//	 * 
//	 * @return
//	 */
//	@ResponseBody
//	@RequestMapping("/showAllBalance")
//	public List<Cw> showAllBalance() {
//		return cusService.getAllBalance();
//	}
	/**
	 * 展示所有顾客余额为0的顾客信息
	 * 
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/showAllBalance")
	public TableDataDto<Cw> showAllBalance(@RequestParam("page") int page,
			@RequestParam("limit") int pageSize) {
		// 获取当前页起始数据序号
		page = (page - 1) * pageSize;
		// 获取当前页展示的所有数据
		List<Cw> cws=cusService.getAllBalance(page,pageSize);
		// 获取数据总条数
		long recordCount =cusService.getCountCw();
		// 封装为Layui表格数据格式
		TableDataDto<Cw> result = new TableDataDto<Cw>(0, "", recordCount, cws);
		return result;
	}

//	/**
//	 * 展示所有有余额顾客的余额信息
//	 * 
//	 * @return
//	 */
//	@ResponseBody
//	@RequestMapping("/showBalance")
//	public List<Cw> showBalance() {
//		return cusService.getBalance();
//	}
	/**
	 * 展示所有有余额顾客的余额信息
	 * 
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/showBalance")
	public TableDataDto<Cw> showBalance(@RequestParam("page") int page,
			@RequestParam("limit") int pageSize) {
		// 获取当前页起始数据序号
		page = (page - 1) * pageSize;
		// 获取当前页展示的所有数据
		List<Cw> cws=cusService.getBalance(page,pageSize);
		// 获取数据总条数
		long recordCount =cusService.getCountCwb();
		// 封装为Layui表格数据格式
		TableDataDto<Cw> result = new TableDataDto<Cw>(0, "", recordCount, cws);
		return result;
	}

//	/**
//	 * 展示指定顾客的消费记录
//	 * 
//	 * @return
//	 */
//	@ResponseBody
//	@RequestMapping("/showSpendDetail")
//	public List<Cwos> showSpendDetail(Integer cid) {
//		return cusService.getSpendDetailByCid(cid);
//	}
	/**
	 * 展示指定顾客的消费记录
	 * 
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/showSpendDetail")
	public TableDataDto<Cwos> showSpendDetail(@RequestParam("page") int page,Integer cid,
			@RequestParam("limit") int pageSize) {
		// 获取当前页起始数据序号
		page = (page - 1) * pageSize;
		// 获取当前页展示的所有数据
		List<Cwos> cws=cusService.getSpendDetailByCid(cid,page,pageSize);
		//获取单个顾客订单数据总数
		long recordCount =cusService.getCountByCid();
		// 封装为Layui表格数据格式
		TableDataDto<Cwos> result = new TableDataDto<Cwos>(0, "", recordCount, cws);
		return result;
	}
	/**
	 * 跳转到顾客有关的数据统计页面
	 * 
	 * @return
	 */
	@RequestMapping("/countPage")
	public String showCountPage() {
		return "/ssj/countShow.html";
	}

//	/**
//	 * 展示日、月、年的新增顾客数，入园顾客数和消费顾客数
//	 * @param ctime
//	 * @param etime
//	 * @return
//	 */
//	@ResponseBody
//	@RequestMapping("/showCountTotal")
//	public CountTotal showCountTotal(Date stime,Date etime){
//		return cusService.getCountTotal(stime,etime);
//	}
//	/**
//	 * 展示日、月、年的新增顾客数，入园顾客数和消费顾客数
//	 * 
//	 * @param ctime
//	 * @param etime
//	 * @return
//	 */
//	@ResponseBody
//	@RequestMapping("/showCountTotal")
//	public CountTotal showCountTotal() {
//		return cusService.getCountTotal();
//	}
	@ResponseBody
	@RequestMapping("/showCountTotal")
	public TableDataDto<CountTotal> showCountTotal(@RequestParam("page") int page,
			@RequestParam("limit") int pageSize) {
		// 获取当前页起始数据序号
		page = (page - 1) * pageSize;
		// 获取当前页展示的所有数据
		CountTotal countTotal= cusService.getCountTotal();
		List<CountTotal> countTotals=new ArrayList<CountTotal>();
		countTotals.add(countTotal);
		// 获取数据总条数
		long recordCount = 1;
		// 封装为Layui表格数据格式
		TableDataDto<CountTotal> result = new TableDataDto<CountTotal>(0, "", recordCount, countTotals);
		return result;
	}

//	/**
//	 * 展示日、月、年的单个顾客入园数和单个顾客消费数
//	 * 
//	 * @param ctime
//	 * @param etime
//	 * @return
//	 */
//	@ResponseBody
//	@RequestMapping("/showCountSingle")
//	public List<CountSingle> showCountSingle(Date stime, Date etime) {
//		return cusService.getCountSingle(stime, etime);
//	}
//	/**
//	 * 展示日、月、年的单个顾客入园数和单个顾客消费数
//	 * 
//	 * @param ctime
//	 * @param etime
//	 * @return
//	 */
//	@ResponseBody
//	@RequestMapping("/showCountSingle")
//	public List<CountSingle> showCountSingle() {
//		return cusService.getCountSingle();
//	}
	/**
	 * 展示日、月、年的单个顾客入园数和单个顾客消费数
	 * 
	 * @param ctime
	 * @param etime
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/showCountSingle")
	public TableDataDto<CountSingle> showCountSingle(@RequestParam("page") int page,
			@RequestParam("limit") int pageSize) {
		// 获取当前页起始数据序号
		page = (page - 1) * pageSize;
		// 获取当前页展示的所有数据
		List<CountSingle> cse=cusService.getCountSingle();
		// 获取数据总条数
		long recordCount = cusService.getCountCus();
		// 封装为Layui表格数据格式
		TableDataDto<CountSingle> result = new TableDataDto<CountSingle>(0, "", recordCount, cse);
		return result;
	}

//	/**
//	 * 展示日、月、年的所有顾客消费商品数量排名
//	 * 
//	 * @param ctime
//	 * @param etime
//	 * @return
//	 */
//	@ResponseBody
//	@RequestMapping("/showCountGoodsNum")
//	public List<CountGoodsNum> showCountGoodsNum(Date stime, Date etime) {
//		return cusService.getCountGoodsNum(stime, etime);
//	}
	/**
	 * 展示日、月、年的所有顾客消费商品数量排名
	 * 
	 * @param ctime
	 * @param etime
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/showCountGoodsNum")
	public List<CountGoodsNum> showCountGoodsNum() {
		return cusService.getCountGoodsNum();
	}

//	/**
//	 * 展示日、月、年的所有顾客消费商品消费额排名
//	 * 
//	 * @param ctime
//	 * @param etime
//	 * @return
//	 */
//	@ResponseBody
//	@RequestMapping("/showCountGoodsSpend")
//	public List<CountGoodsSpend> showCountGoodsSpend(Date stime, Date etime) {
//		return cusService.getCountGoodsSpend(stime, etime);
//	}
	/**
	 * 展示日、月、年的所有顾客消费商品消费额排名
	 * 
	 * @param ctime
	 * @param etime
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/showCountGoodsSpend")
	public List<CountGoodsSpend> showCountGoodsSpend() {
		return cusService.getCountGoodsSpend();
	}
//	/**
//	 * 展示日、月、年的所有顾客消费商品总数量和消费总额
//	 * 
//	 * @param ctime
//	 * @param etime
//	 * @return
//	 */
//	@ResponseBody
//	@RequestMapping("/showCountGoods")
//	public List<CountGoods> showCountGoods() {
//		return cusService.getCountGoods();
//	}
	/**
	 * 展示日、月、年的所有顾客消费商品总数量和消费总额
	 * 
	 * @param ctime
	 * @param etime
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/showCountGoods")
	public TableDataDto<CountGoods> showCountGoods(@RequestParam("page") int page,
			@RequestParam("limit") int pageSize) {
		// 获取当前页起始数据序号
		page = (page - 1) * pageSize;
		// 获取当前页展示的所有数据
		List<CountGoods> cge=cusService.getCountGoods();
		// 获取数据总条数
		long recordCount = cusService.getCouGoods();
		// 封装为Layui表格数据格式
		TableDataDto<CountGoods> result = new TableDataDto<CountGoods>(0, "", recordCount, cge);
		return result;
	}

//	/**
//	 * 展示所有顾客的信息
//	 * 
//	 * @return
//	 */
//	@ResponseBody
//	@RequestMapping("/showCus")
//	public List<Cus> showCus() {
//		return cusService.getAllCus();
//	}
	/**
	 * 展示所有顾客的信息
	 * 
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/showCus")
	public TableDataDto<Cus> showCus(@RequestParam("page") int page,
			@RequestParam("limit") int pageSize) {
		// 获取当前页起始数据序号
		page = (page - 1) * pageSize;
		// 获取当前页展示的所有数据
		List<Cus> cuse=cusService.getAllCus();
		// 获取数据总条数
		long recordCount =10;
		// 封装为Layui表格数据格式
		TableDataDto<Cus> result = new TableDataDto<Cus>(0, "", recordCount, cuse);
		return result;
	}

//	/**
//	 * 展示日、月、年的单个顾客消费商品数量
//	 * 
//	 * @param customer_id
//	 * @param stime
//	 * @param etime
//	 * @return
//	 */
//	@ResponseBody
//	@RequestMapping("/showOneCountGoodsNum")
//	public List<CountOneGoodsNum> showOneCountGoodsNum(Integer customer_id, Date stime, Date etime) {
//		int cid = customer_id;
//		return cusService.getOneCountGoodsNum(cid, stime, etime);
//	}
	/**
	 * 展示日、月、年的单个顾客消费商品数量
	 * 
	 * @param customer_id
	 * @param stime
	 * @param etime
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/showOneCountGoodsNum")
	public List<CountOneGoodsNum> showOneCountGoodsNum(Integer customer_id) {
		int cid = customer_id;
		return cusService.getOneCountGoodsNum(cid);
	}

//	/**
//	 * 展示日、月、年的单个顾客消费商品消费额
//	 * 
//	 * @param customer_id
//	 * @param stime
//	 * @param etime
//	 * @return
//	 */
//	@ResponseBody
//	@RequestMapping("/showOneCountGoodsSpend")
//	public List<CountOneGoodsSpend> showOneCountGoodsSpend(Integer customer_id, Date stime, Date etime) {
//		int cid = customer_id;
//		return cusService.getOneCountGoodsSpend(cid, stime, etime);
//	}
	/**
	 * 展示日、月、年的单个顾客消费商品消费额
	 * 
	 * @param customer_id
	 * @param stime
	 * @param etime
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/showOneCountGoodsSpend")
	public List<CountOneGoodsSpend> showOneCountGoodsSpend(Integer customer_id) {
		int cid = customer_id;
		return cusService.getOneCountGoodsSpend(cid);
	}
//	/**
//	 * 展示日、月、年的单个顾客消费商品总数量和消费总额
//	 * 
//	 * @param customer_id
//	 * @param stime
//	 * @param etime
//	 * @return
//	 */
//	@ResponseBody
//	@RequestMapping("/showOneCountGoods")
//	public List<CountOneGoods> showOneCountGoods(Integer customer_id) {
//		int cid = customer_id;
//		return cusService.getOneCountGoods(cid);
//	}
	/**
	 * 展示日、月、年的单个顾客消费商品总数量和消费总额
	 * 
	 * @param customer_id
	 * @param stime
	 * @param etime
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/showOneCountGoods")
	public TableDataDto<CountOneGoods> showOneCountGoods(@RequestParam("page") int page,Integer cid,
			@RequestParam("limit") int pageSize) {
		// 获取当前页起始数据序号
		page = (page - 1) * pageSize;
		// 获取当前页展示的所有数据
		List<CountOneGoods> cogs=cusService.getOneCountGoods(cid);
		// 获取数据总条数
		long recordCount =cusService.getCouGoods();
		// 封装为Layui表格数据格式
		TableDataDto<CountOneGoods> result = new TableDataDto<CountOneGoods>(0, "", recordCount, cogs);
		return result;
	}
}